<HTML
><HEAD
><TITLE
>init comes first</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.63
"><LINK
REL="HOME"
TITLE="The Linux System Administrator's Guide"
HREF="index.html"><LINK
REL="UP"
TITLE="init"
HREF="init.html"><LINK
REL="PREVIOUS"
TITLE="init"
HREF="init.html"><LINK
REL="NEXT"
TITLE="Configuring init to start 
getty: the 
/etc/inittab file"
HREF="x2051.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Linux System Administrator's Guide: Version 0.7</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="init.html"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 9. <B
CLASS="COMMAND"
>init</B
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x2051.html"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="AEN2016"
>9.1. <B
CLASS="COMMAND"
>init</B
> comes first</A
></H1
><P
><B
CLASS="COMMAND"
>init</B
> is one of those programs that
	are absolutely essential to the operation of a Linux system,
	but that you still can mostly ignore. A good Linux distribution
	will come with a configuration for <B
CLASS="COMMAND"
>init</B
>
	that will work for most systems, and on these systems there is
	nothing you need to do about <B
CLASS="COMMAND"
>init</B
>. Usually,
	you only need to worry about <B
CLASS="COMMAND"
>init</B
> if you hook
	up serial terminals, dial-in (not dial-out) modems, or if you
	want to change the default run level.</P
><P
>When the kernel has started itself (has been loaded
	into memory, has started running, and has initialised all
	device drivers and data structures and such), it finishes its
	own part of the boot process by starting a user level program,
	<B
CLASS="COMMAND"
>init</B
>. Thus, <B
CLASS="COMMAND"
>init</B
> is always
	the first process (its process number is always 1).</P
><P
>The kernel looks for <B
CLASS="COMMAND"
>init</B
>
	in a few locations that have been historically used
	for it, but the proper location for it (on a Linux
	system) is <TT
CLASS="FILENAME"
>/sbin/init</TT
>. If the
	kernel can't find <B
CLASS="COMMAND"
>init</B
>, it tries to run
	<TT
CLASS="FILENAME"
>/bin/sh</TT
>, and if that also fails, the startup
	of the system fails.</P
><P
>When <B
CLASS="COMMAND"
>init</B
> starts, it finishes the
	boot process by doing a number of administrative tasks, such
	as checking filesystems, cleaning up <TT
CLASS="FILENAME"
>/tmp</TT
>,
	starting various services, and starting a <B
CLASS="COMMAND"
>getty</B
>
	for each terminal and virtual console where users should be able
	to log in (see <A
HREF="log-in-and-out.html"
>Chapter 10</A
>).</P
><P
>After the system is properly up, <B
CLASS="COMMAND"
>init</B
>
	restarts <B
CLASS="COMMAND"
>getty</B
> for each terminal
	after a user has logged out (so that the next user can log
	in). <B
CLASS="COMMAND"
>init</B
> also adopts orphan processes: when
	a process starts a child process and dies before its child, the
	child immediately becomes a child of <B
CLASS="COMMAND"
>init</B
>.
	This is important for various technical reasons, but it is good
	to know it, since it makes it easier to understand process lists
	and process tree graphs.
	
		<A
NAME="AEN2042"
HREF="#FTN.AEN2042"
>[1]</A
>
	
	There are a few variants of <B
CLASS="COMMAND"
>init</B
>
	available. Most Linux distributions
	use <B
CLASS="COMMAND"
>sysvinit</B
> (written by Miquel
	van Smoorenburg), which is based on the System V
	<B
CLASS="COMMAND"
>init</B
> design.  The BSD versions of Unix have
	a different <B
CLASS="COMMAND"
>init</B
>. The primary difference
	is run levels: System V has them, BSD does not (at least
	traditionally). This difference is not essential.  We'll look
	at <B
CLASS="COMMAND"
>sysvinit</B
> only.  </P
></DIV
><H3
CLASS="FOOTNOTES"
>Notes</H3
><TABLE
BORDER="0"
CLASS="FOOTNOTES"
WIDTH="100%"
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
WIDTH="5%"
><A
NAME="FTN.AEN2042"
HREF="x2016.html#AEN2042"
>[1]</A
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
WIDTH="95%"
><P
><B
CLASS="COMMAND"
>init</B
> itself is not
		allowed to die. You can't kill <B
CLASS="COMMAND"
>init</B
>
		even with SIGKILL.  </P
></TD
></TR
></TABLE
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="init.html"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x2051.html"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><B
CLASS="COMMAND"
>init</B
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="init.html"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Configuring <B
CLASS="COMMAND"
>init</B
> to start 
<B
CLASS="COMMAND"
>getty</B
>: the 
<TT
CLASS="FILENAME"
>/etc/inittab</TT
> file</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>